home *** CD-ROM | disk | FTP | other *** search
/ FishMarket 1.0 / FishMarket v1.0.iso / fishies / 051-075 / disk_055 / csh / sort.c < prev    next >
C/C++ Source or Header  |  1992-05-06  |  694b  |  46 lines

  1.  
  2. /*
  3.  * SORT.C
  4.  *
  5.  * a QuickSort is used for speed, simplicity, and small code size.
  6.  *
  7.  */
  8.  
  9.  
  10. QuickSort(av, n)
  11. char *av[];
  12. short n;
  13. {
  14.    short b;
  15.  
  16.    if (n > 0) {
  17.       b = QSplit(av, n);
  18.       QuickSort(av, b);
  19.       QuickSort(av+b+1, n - b - 1);
  20.    }
  21. }
  22.  
  23.  
  24. /*
  25.  * QSplit called as a second routine so I don't waste stack on QuickSort's
  26.  * recursivness.
  27.  */
  28.  
  29. QSplit(av, n)
  30. register char *av[];
  31. short n;
  32. {
  33.    register short i, b;
  34.    register char *element, *scr;
  35.  
  36.    element = av[0];
  37.    for (b = 0, i = 1; i < n; ++i) {
  38.       if (strcmp(av[i], element) < 0) {
  39.          ++b;
  40.          scr = av[i]; av[i] = av[b]; av[b] = scr;
  41.       }
  42.    }
  43.    scr = av[0]; av[0] = av[b]; av[b] = scr;
  44.    return (b);
  45. }
  46.